package framework;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;

import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Cell;

import webdriver.BaseEntity;


/** Базовый класс для работы с таблицами Excel
 */
public class ExcelManager extends BaseEntity{

	/** Создает объект книги эксель
	 * @return - очищенное название плана
	 */
	public HSSFWorkbook createExcelBook(){
		HSSFWorkbook workbook = new HSSFWorkbook();
		HSSFSheet sheet = workbook.createSheet("Exported data");
	return workbook;
	}

	/** Сохраняет файл экселя
	 * @param book - книга эксель
	 * @param bookName - название, под которым сохранится файл эксель
	 */
	public void writeExcelBook(HSSFWorkbook book, String bookName){
		try {
			FileOutputStream out = new FileOutputStream(bookName);
			book.write(out);
			out.close();
			logger.info("Данные успешно сохранены в книге Excel!");
			} catch (FileNotFoundException e) {
			e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
	}

	/** Выгружает 2д-массив в файл экселя
	 * @param list - книга эксель
	 * @param bookName - название, под которым сохранится файл эксель
	 */
	public void exportDataToExcel(ArrayList<ArrayList<String>> list, String bookName){
		HSSFWorkbook workbook = createExcelBook();
		int totalRows = list.size();
		int totalCols = list.get(1).size();
		for (int i=0; i<totalRows; i++){ // перебираем значения массива и записываем в эксель
			Row row = workbook.getSheetAt(0).createRow(i);
			for (int j = 0; j<totalCols; j++){
				Cell cell = row.createCell(j);
			    cell.setCellValue(list.get(i).get(j).toString());
			}
		}
		writeExcelBook(workbook, bookName); //сохраняем книгу в файл
	}

	@Override
	protected String formatLogMsg(String message) {
		return null;
	}

}
